using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;
using Microsoft.Office.Interop.Outlook;
using Microsoft.Office.Core;

namespace TXLooker.Common.Core
{
    /// <summary>
    /// It is image of Team Foundation Server Content
    /// </summary>
    public interface IServerProvider
    {
        /// <summary>
        /// 
        /// </summary>
        string ServerName { get; }
        /// <summary>
        /// 
        /// </summary>
        Uri ServerUri { get; }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        TeamFoundationServer Server { get; }
        /// <summary>
        /// 
        /// </summary>
        ICommonStructureService CommonServerStructure { get; }
        /// <summary>
        /// 
        /// </summary>
        IEnumerable<IProjectProvider> Projects { get; }

        event TFEventHandler<IEnumerable<IProjectProvider>> NewProjects;
        event TFEventHandler<IEnumerable<IProjectProvider>> PreRemoveProjects;

        /// <summary>
        /// 
        /// </summary>
        MAPIFolder Folder { get; }
        /// <summary>
        /// 
        /// </summary>
        object SyncFolderObject { get; }

        void Update();
        event EventHandler BeginUpdate;
        event EventHandler EndUpdate;

        event TFEventHandler<CommandBar> InitializeContextMenu;
    }
}
